///*
// * BSM6.0
// *
// * Copyright 2012-2013 (C) SINODATA CO., LTD. All Rights Reserved.
// */
//package com.sinodata.bsm.center.service.resource;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.List;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Propagation;
//import org.springframework.transaction.annotation.Transactional;
//
//import com.sinodata.bsm.center.bean.Condition;
//import com.sinodata.bsm.center.bean.Page;
//import com.sinodata.bsm.center.bean.QueryDimensionBean;
//import com.sinodata.bsm.center.bean.TreeData;
//import com.sinodata.bsm.center.cache.CiAttrCache;
//import com.sinodata.bsm.center.cache.CiAttrRangeCache;
//import com.sinodata.bsm.center.cache.QueryDimensionCache;
//import com.sinodata.bsm.center.dao.impl.ResDimensionDaoImpl;
//import com.sinodata.bsm.common.vo.QueryDimension;
//import com.sinodata.cmdb.vo.CiAttrDef;
//import com.sinodata.cmdb.vo.CiAttrRange;
//
///**
// * <p>
// * Description: 
// * </p>
// *
// * @author dongyushi
// * @version 1.0
//
// * <p>
// * History: 
// *
// * Date                     Author         Version     Description
// * ---------------------------------------------------------------------------------
// * 2012-5-21 下午4:32:28          dongyushi        1.0         To create
// * </p>
// *
// * @since 
// * @see     
// */
//@Service
//@Transactional(propagation = Propagation.NOT_SUPPORTED)
//public class ResDimensionService {
//
//    @Autowired
//    private ResDimensionDaoImpl resDimensionDao;
//    @Autowired
//    private QueryDimensionCache queryDimensionCache;
//
//    public Page<QueryDimensionBean> findByPage(Page<QueryDimension> page, Condition condition) {
//        Page<QueryDimensionBean> resultPage = new Page<QueryDimensionBean>();
//        Page<QueryDimension> pageQueryDimension = resDimensionDao.findByPage(page, condition);
//        //将id换成name
//        List<QueryDimension> list = pageQueryDimension.getRows();
//        List<QueryDimensionBean> resultList = new ArrayList<QueryDimensionBean>();
//        for (QueryDimension queryDimension : list) {
//            QueryDimensionBean resDimension = new QueryDimensionBean();
//            resDimension.setQueryDimension(queryDimension);
//            //遍历查询缓存CiAttrDef 并赋值
//            List<CiAttrDef> ciAttrDefList = getCiAttrDef();
//            for (CiAttrDef ciAttrDef : ciAttrDefList) {
//                if (queryDimension.getFirstDimCode() != null && !queryDimension.getFirstDimCode().equals("") && String.valueOf(ciAttrDef.getId()).equals(queryDimension.getFirstDimCode())) {
//                    resDimension.setFirstDimName(ciAttrDef.getName());
//                }
//                if (queryDimension.getSecondDimCode() != null && !queryDimension.getSecondDimCode().equals("") && String.valueOf(ciAttrDef.getId()).equals(queryDimension.getSecondDimCode())) {
//                    resDimension.setSecondDimName(ciAttrDef.getName());
//                }
//                if (queryDimension.getThirdDimCode() != null && !queryDimension.getThirdDimCode().equals("") && String.valueOf(ciAttrDef.getId()).equals(queryDimension.getThirdDimCode())) {
//                    resDimension.setThirdDimName(ciAttrDef.getName());
//                }
//            }
//            resultList.add(resDimension);
//        }
//        resultPage.setTotal(pageQueryDimension.getTotal());
//        resultPage.setRows(resultList);
//        return resultPage;
//    }
//
//    public List<CiAttrDef> getCiAttrDef() {
//        return ciAttrCache.getAll();
//    }
//
//    public List<CiAttrRange> getCiAttrRange(String rangeId) {
//        List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//        for (CiAttrRange ciAttrRange : ciAttrRangeCache.getAll()) {
//            if (ciAttrRange.getRangeId() != null && String.valueOf(ciAttrRange.getRangeId()).equals(rangeId)) {
//                list.add(ciAttrRange);
//            }
//        }
//        return list;
//    }
//
//    @Transactional(propagation = Propagation.REQUIRED)
//    public void add(QueryDimension queryDimension) {
//        resDimensionDao.save(queryDimension);
//    }
//
//    @Transactional(propagation = Propagation.REQUIRED)
//    public void update(QueryDimension queryDimension) {
//        resDimensionDao.update(queryDimension);
//    }
//
//    @Transactional(propagation = Propagation.REQUIRED)
//    public void delete(Long[] ids) {
//        resDimensionDao.batchDelete(ids);
//    }
//
//    public QueryDimension get(Long id) {
//        return queryDimensionCache.get(id);
//    }
//
//    public QueryDimensionBean getResDimension(Long id) {
//        QueryDimension queryDimension = queryDimensionCache.get(id);
//
//        QueryDimensionBean resDimension = new QueryDimensionBean();
//        resDimension.setQueryDimension(queryDimension);
//        String[] firstDimScope = null;
//        if (queryDimension.getFirstDimScope() != null && !queryDimension.getFirstDimScope().equals("") && queryDimension.getFirstDimScope().contains(",")) {
//            firstDimScope = queryDimension.getFirstDimScope().split(",");
//        } else if (queryDimension.getFirstDimScope() != null && !queryDimension.getFirstDimScope().equals("")) {
//            firstDimScope = new String[] { queryDimension.getFirstDimScope() };
//        }
//        StringBuffer first = new StringBuffer("");
//        if (firstDimScope != null) {
//            for (int i = 0; i < firstDimScope.length; i++) {
//                first.append(ciAttrRangeCache.get(Long.valueOf(firstDimScope[i])).getVal()).append(",");
//            }
//        }
//        String[] secondDimScope = null;
//        if (queryDimension.getSecondDimScope() != null && !queryDimension.getSecondDimScope().equals("") && queryDimension.getSecondDimScope().contains(",")) {
//            secondDimScope = queryDimension.getSecondDimScope().split(",");
//        } else if (queryDimension.getSecondDimScope() != null && !queryDimension.getSecondDimScope().equals("")) {
//            secondDimScope = new String[] { queryDimension.getSecondDimScope() };
//        }
//        StringBuffer second = new StringBuffer("");
//        if (secondDimScope != null) {
//            for (int i = 0; i < secondDimScope.length; i++) {
//                second.append(ciAttrRangeCache.get(Long.valueOf(secondDimScope[i])).getVal()).append(",");
//            }
//        }
//        String[] thirdDimScope = null;
//        if (queryDimension.getThirdDimScope() != null && !queryDimension.getThirdDimScope().equals("") && queryDimension.getThirdDimScope().contains(",")) {
//            thirdDimScope = queryDimension.getThirdDimScope().split(",");
//        } else if (queryDimension.getThirdDimScope() != null && !queryDimension.getThirdDimScope().equals("")) {
//            thirdDimScope = new String[] { queryDimension.getThirdDimScope() };
//        }
//        StringBuffer third = new StringBuffer("");
//        if (thirdDimScope != null) {
//            for (int i = 0; i < thirdDimScope.length; i++) {
//                third.append(ciAttrRangeCache.get(Long.valueOf(thirdDimScope[i])).getVal()).append(",");
//            }
//        }
//        if (first.toString().equals("")) {
//            resDimension.setFirstDimScopeName("");
//        } else {
//            resDimension.setFirstDimScopeName(first.toString().substring(0, first.toString().lastIndexOf(",")));
//        }
//        if (second.toString().equals("")) {
//            resDimension.setSecondDimScopeName("");
//        } else {
//            resDimension.setSecondDimScopeName(second.toString().substring(0, second.toString().lastIndexOf(",")));
//        }
//        if (third.toString().equals("")) {
//            resDimension.setThirdDimScopeName("");
//        } else {
//            resDimension.setThirdDimScopeName(third.toString().substring(0, third.toString().lastIndexOf(",")));
//        }
//        return resDimension;
//    }
//
//    /**
//     * 获取所有ResDimension根据order排序
//     * @return
//     */
//    public List<QueryDimensionBean> getAllResDimension() {
//        List<QueryDimensionBean> result = new ArrayList<QueryDimensionBean>();
//        List<QueryDimension> list = queryDimensionCache.getAll();
//        //list根据order排序
//        list = resultSort(list);
//        for (QueryDimension queryDimension : list) {
//            QueryDimensionBean resDimension = new QueryDimensionBean();
//            resDimension.setQueryDimension(queryDimension);
//            result.add(resDimension);
//        }
//
//        return result;
//    }
//
//    private List<QueryDimension> resultSort(List<QueryDimension> sortList) {
//        for (int i = 0; i < sortList.size(); i++) {
//            for (int j = 0; j < sortList.size() - i - 1; j++) {
//                if (sortList.get(j).getOrder().longValue() > sortList.get(j + 1).getOrder().longValue()) {
//                    QueryDimension tmp = sortList.get(j);
//                    sortList.set(j, sortList.get(j + 1));
//                    sortList.set(j + 1, tmp);
//                }
//            }
//        }
//        return sortList;
//    }
//
//    /**
//     * 获得预览树数据
//     * @param id
//     * @return
//     */
//    public List<TreeData> getTreeDate(Long id) {
//        QueryDimension queryDimension = (QueryDimension) resDimensionDao.findById(new QueryDimension().getClass(), id);
//        List<TreeData> result = new ArrayList<TreeData>();
//        if (queryDimension.getFirstDimCode() != null) {
//            TreeData treeData = new TreeData();
//            treeData.setId(queryDimension.getFirstDimCode());
//            treeData.setName(queryDimension.getName());
//            treeData.setOpen(true);
//            //获取范围限制
//            if (queryDimension.getFirstDimLevel() == null) {
//                getPreviewDimScope(treeData, queryDimension.getFirstDimScope(), "");
//            } else {
//                getPreviewDimScope(treeData, queryDimension.getFirstDimScope(), String.valueOf(queryDimension.getFirstDimLevel()));
//            }
//            for (TreeData result1 : treeData.getChildren()) {
//                result.add(result1);
//            }
//            // result.add(treeData);
//        }
//        List<TreeData> list1 = result;
//        //将二维接到一维后面
//        if (queryDimension.getSecondDimCode() != null) {
//            getDimScopeTreeTwo(list1, queryDimension);
//        }
//        //将三维接到二维后面
//        if (queryDimension.getSecondDimCode() != null && queryDimension.getSecondDimScope() != null) {
//            //获取二维的末节点id的集合
//            List<String> dimScopeList = new ArrayList<String>();
//            getSecondScopeLastId(result, dimScopeList);
//            Collections.sort(dimScopeList);
//            getDimScopeTreeThree(list1, queryDimension, dimScopeList, queryDimension.getSecondDimScope());
//        } else if (queryDimension.getThirdDimCode() != null) {
//            //获取二维的末节点id的集合
//            List<String> dimScopeList = new ArrayList<String>();
//            getSecondScopeLastId(result, dimScopeList);
//            Collections.sort(dimScopeList);
//            getDimScopeTreeThree(list1, queryDimension, dimScopeList, null);
//        }
//        return result;
//    }
//
//    private void getSecondScopeLastId(List<TreeData> result, List<String> list) {
//        for (TreeData treeData : result) {
//            if (treeData.getChildren().size() == 0) {
//                list.add(treeData.getId());
//            } else {
//                getSecondScopeLastId(treeData.getChildren(), list);
//            }
//        }
//    }
//
//    /**
//     * 预览时将三维范围加到二维范围之后
//     * @param result
//     * @param queryDimension
//     * @param dimScopeList
//     */
//    private void getDimScopeTreeThree(List<TreeData> result, QueryDimension queryDimension, List<String> dimScopeList, String secondDimScope) {
//        for (TreeData treeData : result) {
//            //是否是末节点
//            if (treeData.getState() != null && treeData.getState().equals("last")) {
//                //判断是否是二维
//                if (Collections.binarySearch(dimScopeList, String.valueOf(treeData.getId())) > -1) {
//                    //获取三维范围限制
//                    if (queryDimension.getThirdDimCode() != null) {
//                        if (queryDimension.getThirdDimLevel() == null) {
//                            getPreviewDimScope(treeData, queryDimension.getThirdDimScope(), Long.valueOf(queryDimension.getThirdDimCode()), "");
//                        } else {
//                            getPreviewDimScope(treeData, queryDimension.getThirdDimScope(), Long.valueOf(queryDimension.getThirdDimCode()), String.valueOf(queryDimension.getThirdDimLevel()));
//                        }
//                    }
//                } else {
//                    getDimScopeTreeThree(treeData.getChildren(), queryDimension, dimScopeList, secondDimScope);
//                }
//            } else {
//                getDimScopeTreeThree(treeData.getChildren(), queryDimension, dimScopeList, secondDimScope);
//            }
//        }
//    }
//
//    /**
//     * 预览时将二维范围加到一维范围之后
//     * @param result
//     * @param queryDimension
//     */
//    private void getDimScopeTreeTwo(List<TreeData> result, QueryDimension queryDimension) {
//        for (TreeData treeData : result) {
//            //如果一级是末节点
//            if (treeData.getState() != null && treeData.getState().equals("last")) {
//                //获取二维范围限制
//                if (queryDimension.getSecondDimLevel() == null) {
//                    getPreviewDimScope(treeData, queryDimension.getSecondDimScope(), Long.valueOf(queryDimension.getSecondDimCode()), "");
//                } else {
//                    getPreviewDimScope(treeData, queryDimension.getSecondDimScope(), Long.valueOf(queryDimension.getSecondDimCode()), String.valueOf(queryDimension.getSecondDimLevel()));
//                }
//            } else {
//                getDimScopeTreeTwo(treeData.getChildren(), queryDimension);
//            }
//
//        }
//    }
//
//    /**
//     * 获取范围限制
//     * @param result
//     * @param dimScope
//     * @param id
//     */
//    private void getPreviewDimScope(TreeData result, String dimScope, Long id, String lv) {
//        if (dimScope != null) {
//            List<TreeData> children = new ArrayList<TreeData>();
//            String[] a = null;
//            if (dimScope.contains(",")) {
//                a = dimScope.split(",");
//            } else {
//                a = new String[] { dimScope };
//            }
//            List<String> dimScopeList = Arrays.asList(a);
//            Collections.sort(dimScopeList);
//            List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//            //需要的CiAttrRange
//            List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : listAll) {
//                if (id.equals(ciAttrRange.getRangeId()) && (Collections.binarySearch(dimScopeList, String.valueOf(ciAttrRange.getId())) > -1)) {
//                    list.add(ciAttrRange);
//                }
//            }
//            for (CiAttrRange ciAttrRange : list) {
//                if (ciAttrRange.getParentId() == null) {
//                    TreeData treeData1 = new TreeData();
//                    treeData1.setId(result.getId() + "|" + String.valueOf(ciAttrRange.getId()));
//                    treeData1.setName(ciAttrRange.getVal());
//                    //循环遍历其下范围
//                    boolean state = getPreviewDimScopeCycle(result.getId() + "|" + String.valueOf(ciAttrRange.getId()), list, treeData1, ciAttrRange.getId(), dimScopeList);
//                    if (state == false) {
//                        treeData1.setState("last");
//                    }
//                    children.add(treeData1);
//                }
//            }
//            result.setChildren(children);
//        } else {
//            if (lv.equals("")) {
//                List<TreeData> children = new ArrayList<TreeData>();
//                List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//                //需要的CiAttrRange
//                List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//                for (CiAttrRange ciAttrRange : listAll) {
//                    if (id.equals(ciAttrRange.getRangeId())) {
//                        list.add(ciAttrRange);
//                    }
//                }
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        TreeData treeData1 = new TreeData();
//                        treeData1.setId(result.getId() + "|" + String.valueOf(ciAttrRange.getId()));
//                        treeData1.setName(ciAttrRange.getVal());
//                        //循环遍历其下范围
//                        boolean state = getPreviewDimScopeCycle(result.getId() + "|" + String.valueOf(ciAttrRange.getId()), list, treeData1, ciAttrRange.getId(), null);
//                        if (state == false) {
//                            treeData1.setState("last");
//                        }
//                        children.add(treeData1);
//                    }
//                }
//                result.setChildren(children);
//            } else {
//                List<TreeData> children = new ArrayList<TreeData>();
//                List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//                //需要的CiAttrRange
//                List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//                for (CiAttrRange ciAttrRange : listAll) {
//                    if (id.equals(ciAttrRange.getRangeId())) {
//                        list.add(ciAttrRange);
//                    }
//                }
//                List<CiAttrRange> listNeed = new ArrayList<CiAttrRange>();
//                //获取范围限制
//                List<String> dimScopeList = new ArrayList<String>();
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        listNeed.add(ciAttrRange);
//                        dimScopeList.add(String.valueOf(ciAttrRange.getId()));
//                    }
//                }
//                getNeedScope(listNeed, list, Integer.valueOf(lv) - 1, dimScopeList);
//                Collections.sort(dimScopeList);
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        TreeData treeData1 = new TreeData();
//                        treeData1.setId(result.getId() + "|" + String.valueOf(ciAttrRange.getId()));
//                        treeData1.setName(ciAttrRange.getVal());
//                        //循环遍历其下范围
//                        boolean state = getPreviewDimScopeCycle(result.getId() + "|" + String.valueOf(ciAttrRange.getId()), list, treeData1, ciAttrRange.getId(), dimScopeList);
//                        if (state == false) {
//                            treeData1.setState("last");
//                        }
//                        children.add(treeData1);
//                    }
//                }
//                result.setChildren(children);
//            }
//
//        }
//
//    }
//
//    /**
//     * 获取范围限制
//     * @param treeData
//     * @param dimScope
//     */
//    private void getPreviewDimScope(TreeData treeData, String dimScope, String lv) {
//
//        String[] a = null;
//        if (dimScope != null) {
//            if (dimScope.contains(",")) {
//                a = dimScope.split(",");
//            } else {
//                a = new String[] { dimScope };
//            }
//            List<String> dimScopeList = Arrays.asList(a);
//            Collections.sort(dimScopeList);
//            List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//            //需要的CiAttrRange
//            List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : listAll) {
//                if (treeData.getId().equals(String.valueOf(ciAttrRange.getRangeId())) && (Collections.binarySearch(dimScopeList, String.valueOf(ciAttrRange.getId())) > -1)) {
//                    list.add(ciAttrRange);
//                }
//            }
//            List<TreeData> listTreeData = new ArrayList<TreeData>();
//            for (CiAttrRange ciAttrRange : list) {
//                if (ciAttrRange.getParentId() == null) {
//                    TreeData treeData1 = new TreeData();
//                    treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                    treeData1.setName(ciAttrRange.getVal());
//                    treeData1.setOpen(true);
//                    //循环遍历其下范围
//                    String parentIdStr = String.valueOf(ciAttrRange.getId());
//                    //aaa
//                    boolean state = getPreviewDimScopeCycle(parentIdStr, list, treeData1, ciAttrRange.getId(), dimScopeList);
//                    if (state == false) {
//                        treeData1.setState("last");
//                    }
//                    listTreeData.add(treeData1);
//                }
//            }
//            treeData.setChildren(listTreeData);
//        } else {
//            if (lv.equals("")) {
//                List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//                //需要的CiAttrRange
//                List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//                for (CiAttrRange ciAttrRange : listAll) {
//                    if (treeData.getId().equals(String.valueOf(ciAttrRange.getRangeId()))) {
//                        list.add(ciAttrRange);
//                    }
//                }
//                List<TreeData> listTreeData = new ArrayList<TreeData>();
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        TreeData treeData1 = new TreeData();
//                        treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                        treeData1.setName(ciAttrRange.getVal());
//                        treeData1.setOpen(true);
//                        //循环遍历其下范围
//                        String parentIdStr = String.valueOf(ciAttrRange.getId());
//                        boolean state = getPreviewDimScopeCycle(parentIdStr, list, treeData1, ciAttrRange.getId(), null);
//                        if (state == false) {
//                            treeData1.setState("last");
//                        }
//                        listTreeData.add(treeData1);
//                    }
//                }
//                treeData.setChildren(listTreeData);
//            } else {
//                //根据lv获取查询范围
//                List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//                //需要的CiAttrRange
//                List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//                for (CiAttrRange ciAttrRange : listAll) {
//                    if (treeData.getId().equals(String.valueOf(ciAttrRange.getRangeId()))) {
//                        list.add(ciAttrRange);
//                    }
//                }
//
//                List<CiAttrRange> listNeed = new ArrayList<CiAttrRange>();
//                //获取范围限制
//                List<String> dimScopeList = new ArrayList<String>();
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        listNeed.add(ciAttrRange);
//                        dimScopeList.add(String.valueOf(ciAttrRange.getId()));
//                    }
//                }
//                getNeedScope(listNeed, list, Integer.valueOf(lv) - 1, dimScopeList);
//                Collections.sort(dimScopeList);
//
//                List<TreeData> listTreeData = new ArrayList<TreeData>();
//                for (CiAttrRange ciAttrRange : list) {
//                    if (ciAttrRange.getParentId() == null) {
//                        TreeData treeData1 = new TreeData();
//                        treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                        treeData1.setName(ciAttrRange.getVal());
//                        treeData.setOpen(true);
//                        //循环遍历其下范围
//                        String parentIdStr = String.valueOf(ciAttrRange.getId());
//                        boolean state = getPreviewDimScopeCycle(parentIdStr, list, treeData1, ciAttrRange.getId(), dimScopeList);
//                        if (state == false) {
//                            treeData1.setState("last");
//                        }
//                        listTreeData.add(treeData1);
//                    }
//                }
//                treeData.setChildren(listTreeData);
//            }
//
//        }
//
//    }
//
//    /**
//     * 根据LEVEL递归
//     * @param list
//     * @param listAll
//     * @param lv
//     * @param resultList
//     */
//    private void getNeedScope(List<CiAttrRange> list, List<CiAttrRange> listAll, int lv, List<String> resultList) {
//        List<CiAttrRange> listNeed = new ArrayList<CiAttrRange>();
//        if (lv > 0) {
//            for (CiAttrRange ciAttrRange : list) {
//                for (CiAttrRange ciAttrRange1 : listAll) {
//                    if (ciAttrRange.getId().equals(ciAttrRange1.getParentId())) {
//                        resultList.add(String.valueOf(ciAttrRange1.getId()));
//                        listNeed.add(ciAttrRange1);
//                    }
//                }
//            }
//            getNeedScope(listNeed, listAll, lv - 1, resultList);
//        }
//    }
//
//    /**
//     * 递归
//     * @param list
//     * @param treeData
//     * @param parentId
//     * @param dimScopeList
//     * @return
//     */
//    private boolean getPreviewDimScopeCycle(List<CiAttrRange> list, TreeData treeData, Long parentId, List<String> dimScopeList) {
//        if (dimScopeList != null) {
//            Collections.sort(dimScopeList);
//            //需要的CiAttrRange
//            List<CiAttrRange> resultList = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : list) {
//                if (parentId.equals(ciAttrRange.getParentId()) && Collections.binarySearch(dimScopeList, String.valueOf(ciAttrRange.getId())) > -1) {
//                    resultList.add(ciAttrRange);
//                }
//            }
//            List<TreeData> listTreeData = new ArrayList<TreeData>();
//            for (CiAttrRange ciAttrRange : resultList) {
//                TreeData treeData1 = new TreeData();
//                treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                treeData1.setName(ciAttrRange.getVal());
//                treeData1.setState("open");
//                boolean state = getPreviewDimScopeCycle(list, treeData1, ciAttrRange.getId(), dimScopeList);
//                if (state == false) {
//                    treeData1.setState("last");
//                }
//                listTreeData.add(treeData1);
//            }
//            treeData.setChildren(listTreeData);
//            if (resultList.size() == 0) {
//                return false;
//            }
//            return true;
//        } else {
//            //需要的CiAttrRange
//            List<CiAttrRange> resultList = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : list) {
//                if (parentId.equals(ciAttrRange.getParentId())) {
//                    resultList.add(ciAttrRange);
//                }
//            }
//            List<TreeData> listTreeData = new ArrayList<TreeData>();
//            for (CiAttrRange ciAttrRange : resultList) {
//                TreeData treeData1 = new TreeData();
//                treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                treeData1.setName(ciAttrRange.getVal());
//                treeData1.setState("open");
//                boolean state = getPreviewDimScopeCycle(list, treeData1, ciAttrRange.getId(), null);
//                if (state == false) {
//                    treeData1.setState("last");
//                }
//                listTreeData.add(treeData1);
//            }
//            treeData.setChildren(listTreeData);
//            if (resultList.size() == 0) {
//                return false;
//            }
//            return true;
//        }
//
//    }
//
//    private boolean getPreviewDimScopeCycle(String parentIdStr, List<CiAttrRange> list, TreeData treeData, Long parentId, List<String> dimScopeList) {
//        if (dimScopeList != null) {
//            Collections.sort(dimScopeList);
//            //需要的CiAttrRange
//            List<CiAttrRange> resultList = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : list) {
//                if (parentId.equals(ciAttrRange.getParentId()) && Collections.binarySearch(dimScopeList, String.valueOf(ciAttrRange.getId())) > -1) {
//                    resultList.add(ciAttrRange);
//                }
//            }
//            List<TreeData> listTreeData = new ArrayList<TreeData>();
//            for (CiAttrRange ciAttrRange : resultList) {
//                TreeData treeData1 = new TreeData();
//                treeData1.setId(parentIdStr + "," + String.valueOf(ciAttrRange.getId()));
//                treeData1.setName(ciAttrRange.getVal());
//                treeData1.setState("open");
//                boolean state = getPreviewDimScopeCycle(parentIdStr + "," + String.valueOf(ciAttrRange.getId()), list, treeData1, ciAttrRange.getId(), dimScopeList);
//                if (state == false) {
//                    treeData1.setState("last");
//                }
//                listTreeData.add(treeData1);
//            }
//            treeData.setChildren(listTreeData);
//            if (resultList.size() == 0) {
//                return false;
//            }
//            return true;
//        } else {
//            //需要的CiAttrRange
//            List<CiAttrRange> resultList = new ArrayList<CiAttrRange>();
//            for (CiAttrRange ciAttrRange : list) {
//                if (parentId.equals(ciAttrRange.getParentId())) {
//                    resultList.add(ciAttrRange);
//                }
//            }
//            List<TreeData> listTreeData = new ArrayList<TreeData>();
//            for (CiAttrRange ciAttrRange : resultList) {
//                TreeData treeData1 = new TreeData();
//                treeData1.setId(parentIdStr + "," + String.valueOf(ciAttrRange.getId()));
//                treeData1.setName(ciAttrRange.getVal());
//                treeData1.setState("open");
//                boolean state = getPreviewDimScopeCycle(parentIdStr + "," + String.valueOf(ciAttrRange.getId()), list, treeData1, ciAttrRange.getId(), null);
//                if (state == false) {
//                    treeData1.setState("last");
//                }
//                listTreeData.add(treeData1);
//            }
//            treeData.setChildren(listTreeData);
//            if (resultList.size() == 0) {
//                return false;
//            }
//            return true;
//        }
//
//    }
//
//    private void getDimScope(List<CiAttrRange> list, TreeData treeData, Long parentId, int dimLevel, List<String> scopeList, List<String> scopeList2) {
//        //需要的CiAttrRange
//        List<CiAttrRange> resultList = new ArrayList<CiAttrRange>();
//        for (CiAttrRange ciAttrRange : list) {
//            if (parentId.equals(ciAttrRange.getParentId())) {
//                resultList.add(ciAttrRange);
//            }
//        }
//        List<TreeData> listTreeData = new ArrayList<TreeData>();
//        for (CiAttrRange ciAttrRange : resultList) {
//            if (dimLevel > 0) {
//                TreeData treeData1 = new TreeData();
//                treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                treeData1.setName(ciAttrRange.getVal());
//                treeData1.setState("open");
//                if (scopeList != null && Collections.binarySearch(scopeList, String.valueOf(ciAttrRange.getId())) > -1) {
//                    treeData1.setChecked(true);
//                }
//                if (scopeList2 != null && Collections.binarySearch(scopeList2, String.valueOf(ciAttrRange.getId())) > -1) {
//                    treeData1.setChecked(true);
//                }
//                getDimScope(list, treeData1, ciAttrRange.getId(), dimLevel - 1, scopeList, scopeList2);
//
//                listTreeData.add(treeData1);
//            }
//        }
//        treeData.setChildren(listTreeData);
//    }
//
//    //查询范围限制下拉框的值
//    public List<TreeData> getSelectTreeDate(String rangeId, int dimLevel, List<String> scopeList, List<String> scopeList2) {
//        List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//        //需要的CiAttrRange
//        List<CiAttrRange> list = new ArrayList<CiAttrRange>();
//        for (CiAttrRange ciAttrRange : listAll) {
//            if (rangeId.equals(String.valueOf(ciAttrRange.getRangeId()))) {
//                list.add(ciAttrRange);
//            }
//        }
//        List<TreeData> listTreeData = new ArrayList<TreeData>();
//        for (CiAttrRange ciAttrRange : list) {
//            if (ciAttrRange.getParentId() == null) {
//                if (dimLevel > 0) {
//                    TreeData treeData1 = new TreeData();
//                    treeData1.setId(String.valueOf(ciAttrRange.getId()));
//                    treeData1.setName(ciAttrRange.getVal());
//                    treeData1.setState("open");
//                    if (scopeList != null && Collections.binarySearch(scopeList, String.valueOf(ciAttrRange.getId())) > -1) {
//                        treeData1.setChecked(true);
//                    }
//                    if (scopeList2 != null && Collections.binarySearch(scopeList2, String.valueOf(ciAttrRange.getId())) > -1) {
//                        treeData1.setChecked(true);
//                    }
//                    //循环遍历其下范围
//                    getDimScope(list, treeData1, ciAttrRange.getId(), dimLevel - 1, scopeList, scopeList2);
//
//                    listTreeData.add(treeData1);
//                }
//            }
//        }
//        return listTreeData;
//    }
//
//    public QueryDimension findById(Long id) {
//        return (QueryDimension) resDimensionDao.findById(new QueryDimension().getClass(), id);
//
//    }
//
//    /**
//     * 获取维度的最高级别
//     * @param dimCode
//     * @return
//     */
//    public int getMaxLvByDimCode(String dimCode) {
//        Integer lv = 0;
//        List<CiAttrRange> listAll = ciAttrRangeCache.getAll();
//        List<Long> list = new ArrayList<Long>();
//        for (CiAttrRange ciAttrRange : listAll) {
//            if (dimCode.equals(String.valueOf(ciAttrRange.getRangeId())) && ciAttrRange.getParentId() == null) {
//                list.add(ciAttrRange.getId());
//            }
//        }
//        List<Integer> result = new ArrayList<Integer>();
//        if (list.size() != 0) {
//            getMaxLvCycle(lv + 1, listAll, list, result);
//        }
//
//        return result.get(0);
//    }
//
//    public void getMaxLvCycle(Integer lv, List<CiAttrRange> listAll, List<Long> parentId, List<Integer> result) {
//        Collections.sort(parentId);
//        List<Long> list = new ArrayList<Long>();
//        for (CiAttrRange ciAttrRange : listAll) {
//            if (ciAttrRange.getParentId() != null && Collections.binarySearch(parentId, ciAttrRange.getParentId()) > -1) {
//                list.add(ciAttrRange.getId());
//            }
//        }
//        if (list.size() != 0) {
//            lv = lv + 1;
//            getMaxLvCycle(lv, listAll, list, result);
//        } else {
//            result.add(lv);
//        }
//    }
//}
